package movilmax.sia_corp.action;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;


import movilmax.sia_corp.model.CorpProductos;
import movilmax.sia_corp.model.CorpServicios;
import movilmax.sia_corp.model.DetalleSiteSurvey;
import movilmax.sia_corp.model.Prospecto;
import movilmax.sia_corp.model.ReferenciasProspectos;
import movilmax.sia_corp.model.SiteSurvey;
import movilmax.sia_corp.model.SucursalC;
import apli.conectar.Conectar;
import basedatos.Fecha;
import basedatos.Resultado;
import com.opensymphony.xwork2.ActionSupport;


public class CargarSiteSurvey extends ActionSupport {

	private static final long serialVersionUID = -3301184948084911584L;
	private Map<String, Prospecto> accordion;
	private Map<String, SiteSurvey> ss;
	private Conectar BASE= new Conectar();
	private Fecha F =new Fecha();
	private String cod_site;
	LinkedList<DetalleSiteSurvey> DETALLE_SITESURVEY_=new LinkedList<DetalleSiteSurvey>();
	public String consultar() throws Exception {
	        accordion = new HashMap<String, Prospecto>();
	        ss = new HashMap<String, SiteSurvey>();
		    Prospecto PROS = new Prospecto();
			/*String SQL=" SELECT TOP 1 ss.codigo as cod_ss, ss.obs as obs_ss, ss.fecha as fecha_ss, ss.hora as hora_ss, ss.stx as status_ss "+
			  ", ss.autorizada, ven.descripcion as des_ven "+
			  ", p.codigo, p.nombres as razon_s, p.identificacion, p.email, p.paginaweb as web, "+
			  "u.descripcion as eje_ven, p.telefono_oficina, p.telefono, m.municipio as d_muni, "+ 
			  "e.estado as d_esta FROM prospectos p, estados e, municipios m, corp_sitesurvey ss, usuarios u, vendedores ven, corp_asignaciones asig "+
			  "WHERE p.municipio=m.cod and e.cod=m.estado and ss.prospecto=p.codigo and u.usuario=p.usuario_registro "+
			  " AND p.codigo = asig.prospecto AND asig.vendedor = ven.cod AND ss.codigo='"+this.getCod_site()+"' ";
			*/
			String SQL="select T.codigo,s.fecha,s.hora,s.obs,S.stx,Uv.celular as tel2,V.descripcion as vendedor,U.descripcion as autorizado,U.celular as tel1, "+ 
				"T.identificacion,T.nombres+' '+T.apellidos as razon,T.paginaweb,T.email "+
				"from prospectos T,corp_sitesurvey S,vendedores V,usuarios U ,usuarios Uv "+
				"where S.codigo='"+this.getCod_site()+"' and  S.prospecto=T.codigo  and S.usuario=V.usuario "+
				"and S.autorizada=U.usuario and V.usuario=Uv.usuario ";
			Resultado RCS= BASE.getBaseDatos().consultar(SQL);
					if(RCS.RP){
						int i=1;
					    do{
						  Prospecto PROSPECTO= new Prospecto();    
						  PROSPECTO.setCodigo(RCS.getCadena("codigo"));
						  PROSPECTO.setNombres(RCS.getCadena("razon"));
						  PROSPECTO.setIdentificacion(RCS.getCadena("identificacion"));
						  PROSPECTO.setEmail(RCS.getCadena("email"));
						  PROSPECTO.setWeb(RCS.getCadena("web"));
						  //ejecutivo de ventas
						  PROSPECTO.setTel_oficina(RCS.getCadena("tel2"));
						  PROSPECTO.setTelefono(RCS.getCadena("tel1"));
						 /* PROSPECTO.setEstado(RCS.getCadena("d_esta"));
						  PROSPECTO.setMunicipio(RCS.getCadena("d_muni"));*/
						  PROSPECTO.setVendedor(RCS.getCadena("vendedor"));
						  SiteSurvey SITESURVEY = new SiteSurvey();
						  SITESURVEY.setCodigo( this.getCod_site());
						  SITESURVEY.setAutoriza(RCS.getCadena("autorizado").toUpperCase());
						  SITESURVEY.setObs(RCS.getCadena("obs").toUpperCase());
						  SITESURVEY.setFecha((RCS.getCadena("fecha")));
						  SITESURVEY.setFecha(F.formateaFecha(SITESURVEY.getFecha(),true));
						  SITESURVEY.setHora(RCS.getCadena("hora"));
						  SITESURVEY.setStatus(RCS.getCadena("stx"));
						  SITESURVEY.setProspectoC(PROSPECTO);
						  //SUCURSALES DE SITE
						  
						  LinkedList<SucursalC> SUCURSALES=new LinkedList<SucursalC>();
						  SQL=" SELECT  su.avcalle, su.*, mun.municipio as mun_su, es.estado as esta_su, "+
						  " su.des_inmuemble, su.nro_inmueble, su.piso_inmueble "+
						  "FROM corp_sucursales su, municipios mun, estados es, prospectos pros "+
						  "WHERE su.prospecto = pros.codigo AND mun.estado = es.cod AND su.municipio = mun.cod AND "+
						  "su.prospecto='"+PROSPECTO.getCodigo()+"' ";
						  Resultado RCS_S=BASE.getBaseDatos().consultar(SQL);
						  if(RCS_S.RP){
							  do{ 
								  SucursalC sucursal = new SucursalC();
								  sucursal.setAvcalle(RCS_S.getCadena("avcalle"));
								  sucursal.setCiudad(RCS_S.getCadena("ciudad"));
								  sucursal.setCod(RCS_S.getCadena("cod"));
								  sucursal.setDes_mun(RCS_S.getCadena("mun_su"));
								  sucursal.setDes(RCS_S.getCadena("descripcion"));
								  sucursal.setDes_estado(RCS_S.getCadena("esta_su"));
								  sucursal.setTp_inmueble(RCS_S.getCadena("tipoinmueble"));
								  sucursal.setTel1(RCS_S.getCadena("telefono"));
								  sucursal.setTel2(RCS_S.getCadena("telefono1"));
								  sucursal.setDes_inmueble(RCS_S.getCadena("des_inmuemble"));
								  sucursal.setNro(RCS_S.getCadena("nro_inmueble"));
								  sucursal.setPiso(RCS_S.getCadena("piso_inmueble"));
								  //FIN DETALLE SITE SURVEY
								  SUCURSALES.add(sucursal);
							  }while(RCS_S.sigItem()); 
							  
							  SITESURVEY.setSucursales(SUCURSALES);
							  SITESURVEY.setDetalle(DETALLE_SITESURVEY_);
						  }
						  //FIN DE SUCURSALES DE SITE						  
						  SQL="SELECT  su.descripcion as des_suc, ser.descripcion as des_ser,pro.descripcion as des_pro "+
						 "FROM corp_sitesurvey ss, corp_sitesurvey_detalle dss,corp_sucursales su, corp_servicios ser, corp_productos pro "+ 
						 "WHERE ss.codigo = dss.[site] and su.cod = dss.sucursal AND dss.servicio = ser.cod AND dss.producto = pro.cod "+ 
						 "AND ss.codigo='" +this.getCod_site()+ "' "+
						 "Order by su.cod ASC ";
						  
						  Resultado RCS_D=BASE.getBaseDatos().consultar(SQL);
						  if(RCS_D.RP){
							  do{ 
								  DetalleSiteSurvey DETALLE=new DetalleSiteSurvey();
								  CorpProductos producto = new CorpProductos();
								  CorpServicios servicios = new CorpServicios();
								  DETALLE.setCod(RCS_D.getCadena("cod_dss"));
								  DETALLE.setSucursal(RCS_D.getCadena("des_suc") ) ;
								  producto.setDescripcion(RCS_D.getCadena("des_pro"));
								  DETALLE.setProducto(producto);
								  servicios.setDescripcion(RCS_D.getCadena("des_ser"));
								  DETALLE.setServicio(servicios);
								  DETALLE.setSite(SITESURVEY);
								  DETALLE_SITESURVEY_.add(DETALLE);
							  }while(RCS_D.sigItem()); 
						  }
						  
						  
						  
						  //REFERENCIAS POR SUCURSAL
						  LinkedList<ReferenciasProspectos> REFERENCIA_X_SUCURSAL_=new LinkedList<ReferenciasProspectos>();

						  SQL="SELECT rp.razonsocial as rz, rp.tipo, rp.telefono, rp.celular, su.descripcion as des_su, rp.email "+ 
							"FROM  referencias_personales rp, referencias_prospectos rpros, corp_sucursales su "+
							"WHERE rpros.prospecto = '"+ SITESURVEY.getProspectoC().getCodigo()+ "' and rp.codigo = rpros.referencia AND rpros.sucursal = su.cod ";
						  Resultado RCS_R=BASE.getBaseDatos().consultar(SQL);
						  if(RCS_R.RP){
							  do{
								  ReferenciasProspectos REFERENCIA = new ReferenciasProspectos();
								  REFERENCIA.setNombre_apellido(RCS_R.getCadena("rz"));
								  REFERENCIA.setTipo(RCS_R.getCadena("tipo"));
								  REFERENCIA.setSucursal(RCS_R.getCadena("des_su"));
								  REFERENCIA.setTelefono(RCS_R.getCadena("telefono"));
								  REFERENCIA.setCelular(RCS_R.getCadena("celular"));
								  REFERENCIA.setEmail(RCS_R.getCadena("email"));
								  REFERENCIA_X_SUCURSAL_.add(REFERENCIA);
							   }while(RCS_R.sigItem()); 
						  }
						  
						  //FIN REFERENCIA POR SUCURSAL
						  SITESURVEY.setReferencias(REFERENCIA_X_SUCURSAL_);
						  ss.put("dv"+i, SITESURVEY);
						  accordion.put("dv"+i,PROSPECTO);
						  i++;
					   }while(RCS.sigItem());  
					
					}else{
						PROS.setNombres("Cliente no posee Site Survey");	
					    accordion.put("dv1",PROS);	 
					}	
		    return SUCCESS;
	    }

	    public Map<String, Prospecto> getAccordion() {
	        return accordion;
	    }

		public Map<String, SiteSurvey> getSs() {
			return ss;
		}

		public void setSs(Map<String, SiteSurvey> ss) {
			this.ss = ss;
		}

		public String getCod_site() {
			return cod_site;
		}

		public void setCod_site(String cod_site) {
			this.cod_site = cod_site;
		}
		
		
	    
	    
}